<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/page-flags.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/page-flags.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * Macros for manipulating and testing page-&gt;flags</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> */</span>
<a name="4" /><span class="True">       4:</span> 
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_UEFHRV9GTEFHU19IXzA_"><span class="b">PAGE_FLAGS_H</span></a>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_UEFHRV9GTEFHU19IXzA_"><span class="b">PAGE_FLAGS_H</span></a>
<a name="7" /><span class="Maybe">       7:</span> 
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">mmdebug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__GENERATING_BOUNDS_H</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">mm_types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">generated</span><span class="f">/</span><span class="b">bounds</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !__GENERATING_BOUNDS_H */</span>
<a name="15" /><span class="Maybe">      15:</span> 
<a name="16" /><span class="Maybe">      16:</span> <span class="k">/*</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * Various page-&gt;flags bits:</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> *</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> * PG_reserved is set for special pages, which can never be swapped out. Some</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * of them might not even exist (eg empty_bad_page)...</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> *</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> * The PG_private bitflag is set on pagecache pages if they contain filesystem</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="k"> * specific data (which is normally at page-&gt;private). It can be used by</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="k"> * private allocations for its own usage.</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> *</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> * During initiation of disk I/O, PG_locked is set. This bit is set before I/O</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="k"> * and cleared when writeback _starts_ or when read _completes_. PG_writeback</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="k"> * is set before writeback starts and cleared when it finishes.</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="k"> *</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="k"> * PG_locked also pins a page in pagecache, and blocks truncation of the file</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="k"> * while it is held.</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="k"> *</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="k"> * page_waitqueue(page) is a wait queue of all tasks waiting for the page</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="k"> * to become unlocked.</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="k"> *</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> * PG_uptodate tells whether the page&apos;s contents is valid.  When a read</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> * completes, the page becomes uptodate, unless a disk I/O error happened.</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> *</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * PG_referenced, PG_reclaim are used for page reclaim for anonymous and</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> * file-backed pagecache (see mm/vmscan.c).</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> *</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> * PG_error is set to indicate that an I/O error occurred on this page.</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> *</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * PG_arch_1 is an architecture specific page state bit.  The generic code</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * guarantees that this bit is cleared for a page when it first is entered into</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * the page cache.</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> *</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> * PG_highmem pages are not permanently mapped into the kernel virtual address</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> * space, they need to be kmapped separately for doing IO on the pages.  The</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> * struct page (these bits with information) are always mapped into kernel</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> * address space...</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> *</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> * PG_hwpoison indicates that a page got corrupted in hardware and contains</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> * data with incorrect ECC bits that triggered a machine check. Accessing is</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * not safe since it may cause another machine check. Don&apos;t touch!</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> */</span>
<a name="57" /><span class="Maybe">      57:</span> 
<a name="58" /><span class="Maybe">      58:</span> <span class="k">/*</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * Don&apos;t use the *_dontuse flags.  Use the macros.  Otherwise you&apos;ll break</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * locked- and dirty-page accounting.</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> *</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * The page flags field is split into two parts, the main flags area</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> * which extends from the low bits upwards, and the fields area which</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> * extends from the high bits downwards.</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> *</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> *  | FIELD | ... | FLAGS |</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> *  N-1           ^       0</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> *               (NR_PAGEFLAGS)</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> *</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> * The fields area is reserved for fields mapping zone, node (for NUMA) and</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> * SPARSEMEM section (for variants of SPARSEMEM that require section ids like</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> * SPARSEMEM_EXTREME with !SPARSEMEM_VMEMMAP).</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> */</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="m">enum</span> <span class="b">pageflags</span> <span class="f">{</span>
<a name="75" /><span class="Maybe">      75:</span>     <span class="b">PG_locked</span><span class="f">,</span>        <span class="k">/* Page is locked. Don&apos;t touch. */</span>
<a name="76" /><span class="Maybe">      76:</span>     <span class="b">PG_error</span><span class="f">,</span>
<a name="77" /><span class="Maybe">      77:</span>     <span class="b">PG_referenced</span><span class="f">,</span>
<a name="78" /><span class="Maybe">      78:</span>     <span class="b">PG_uptodate</span><span class="f">,</span>
<a name="79" /><span class="Maybe">      79:</span>     <span class="b">PG_dirty</span><span class="f">,</span>
<a name="80" /><span class="Maybe">      80:</span>     <span class="b">PG_lru</span><span class="f">,</span>
<a name="81" /><span class="Maybe">      81:</span>     <span class="b">PG_active</span><span class="f">,</span>
<a name="82" /><span class="Maybe">      82:</span>     <span class="b">PG_slab</span><span class="f">,</span>
<a name="83" /><span class="Maybe">      83:</span>     <span class="b">PG_owner_priv_1</span><span class="f">,</span>    <span class="k">/* Owner use. If pagecache, fs may use*/</span>
<a name="84" /><span class="Maybe">      84:</span>     <span class="b">PG_arch_1</span><span class="f">,</span>
<a name="85" /><span class="Maybe">      85:</span>     <span class="b">PG_reserved</span><span class="f">,</span>
<a name="86" /><span class="Maybe">      86:</span>     <span class="b">PG_private</span><span class="f">,</span>        <span class="k">/* If pagecache, has fs-private data */</span>
<a name="87" /><span class="Maybe">      87:</span>     <span class="b">PG_private_2</span><span class="f">,</span>        <span class="k">/* If pagecache, has fs aux data */</span>
<a name="88" /><span class="Maybe">      88:</span>     <span class="b">PG_writeback</span><span class="f">,</span>        <span class="k">/* Page is under writeback */</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1BBR0VGTEFHU19FWFRFTkRFRF8w"><span class="b">CONFIG_PAGEFLAGS_EXTENDED</span></a>
<a name="90" /><span class="Maybe">      90:</span>     <span class="b">PG_head</span><span class="f">,</span>        <span class="k">/* A head page */</span>
<a name="91" /><span class="Maybe">      91:</span>     <span class="b">PG_tail</span><span class="f">,</span>        <span class="k">/* A tail page */</span>
<a name="92" /><span class="False">      92:</span> <span class="f">#</span><span class="n">else</span>
<a name="93" /><span class="False">      93:</span>     <span class="b">PG_compound</span><span class="f">,</span>        <span class="k">/* A compound page */</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">#</span><span class="n">endif</span>
<a name="95" /><span class="Maybe">      95:</span>     <span class="b">PG_swapcache</span><span class="f">,</span>        <span class="k">/* Swap page: swp_entry_t in private */</span>
<a name="96" /><span class="Maybe">      96:</span>     <span class="b">PG_mappedtodisk</span><span class="f">,</span>    <span class="k">/* Has blocks allocated on-disk */</span>
<a name="97" /><span class="Maybe">      97:</span>     <span class="b">PG_reclaim</span><span class="f">,</span>        <span class="k">/* To be reclaimed asap */</span>
<a name="98" /><span class="Maybe">      98:</span>     <span class="b">PG_swapbacked</span><span class="f">,</span>        <span class="k">/* Page is backed by RAM/swap */</span>
<a name="99" /><span class="Maybe">      99:</span>     <span class="b">PG_unevictable</span><span class="f">,</span>        <span class="k">/* Page is &quot;unevictable&quot;  */</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="101" /><span class="Maybe">     101:</span>     <span class="b">PG_mlocked</span><span class="f">,</span>        <span class="k">/* Page is vma mlocked */</span>
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">endif</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRF8w"><span class="b">CONFIG_ARCH_USES_PG_UNCACHED</span></a>
<a name="104" /><span class="Maybe">     104:</span>     <span class="b">PG_uncached</span><span class="f">,</span>        <span class="k">/* Page has been mapped as uncached */</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="f">#</span><span class="n">endif</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01FTU9SWV9GQUlMVVJFXzA_"><span class="b">CONFIG_MEMORY_FAILURE</span></a>
<a name="107" /><span class="Maybe">     107:</span>     <span class="b">PG_hwpoison</span><span class="f">,</span>        <span class="k">/* hardware poisoned page. Don&apos;t touch */</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">#</span><span class="n">endif</span>
<a name="109" /><span class="False">     109:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRANSPARENT_HUGEPAGE</span>
<a name="110" /><span class="False">     110:</span>     <span class="b">PG_compound_lock</span><span class="f">,</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="f">#</span><span class="n">endif</span>
<a name="112" /><span class="Maybe">     112:</span>     <span class="b">__NR_PAGEFLAGS</span><span class="f">,</span>
<a name="113" /><span class="Maybe">     113:</span> 
<a name="114" /><span class="Maybe">     114:</span>     <span class="k">/* Filesystems */</span>
<a name="115" /><span class="Maybe">     115:</span>     <span class="b">PG_checked</span> <span class="f">=</span> <span class="b">PG_owner_priv_1</span><span class="f">,</span>
<a name="116" /><span class="Maybe">     116:</span> 
<a name="117" /><span class="Maybe">     117:</span>     <span class="k">/* Two page bits are conscripted by FS-Cache to maintain local caching</span>
<a name="118" /><span class="Maybe">     118:</span> <span class="k">     * state.  These bits are set on pages belonging to the netfs&apos;s inodes</span>
<a name="119" /><span class="Maybe">     119:</span> <span class="k">     * when those inodes are being locally cached.</span>
<a name="120" /><span class="Maybe">     120:</span> <span class="k">     */</span>
<a name="121" /><span class="Maybe">     121:</span>     <span class="b">PG_fscache</span> <span class="f">=</span> <span class="b">PG_private_2</span><span class="f">,</span>    <span class="k">/* page backed by cache */</span>
<a name="122" /><span class="Maybe">     122:</span> 
<a name="123" /><span class="Maybe">     123:</span>     <span class="k">/* XEN */</span>
<a name="124" /><span class="Maybe">     124:</span>     <span class="b">PG_pinned</span> <span class="f">=</span> <span class="b">PG_owner_priv_1</span><span class="f">,</span>
<a name="125" /><span class="Maybe">     125:</span>     <span class="b">PG_savepinned</span> <span class="f">=</span> <span class="b">PG_dirty</span><span class="f">,</span>
<a name="126" /><span class="Maybe">     126:</span> 
<a name="127" /><span class="Maybe">     127:</span>     <span class="k">/* SLOB */</span>
<a name="128" /><span class="Maybe">     128:</span>     <span class="b">PG_slob_free</span> <span class="f">=</span> <span class="b">PG_private</span><span class="f">,</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="f">}</span><span class="f">;</span>
<a name="130" /><span class="Maybe">     130:</span> 
<a name="131" /><span class="Maybe">     131:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__GENERATING_BOUNDS_H</span>
<a name="132" /><span class="Maybe">     132:</span> 
<a name="133" /><span class="Maybe">     133:</span> <span class="k">/*</span>
<a name="134" /><span class="Maybe">     134:</span> <span class="k"> * Macros to create function definitions for page flags</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="k"> */</span>
<a name="136" /><span class="Maybe">     136:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="137" /><span class="Maybe">     137:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">Page</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="138" /><span class="Maybe">     138:</span>             <span class="f">{</span> <span class="m">return</span> <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="139" /><span class="Maybe">     139:</span> 
<a name="140" /><span class="Maybe">     140:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_U0VUUEFHRUZMQUdfMA__"><span class="b">SETPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="141" /><span class="Maybe">     141:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">SetPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="142" /><span class="Maybe">     142:</span>             <span class="f">{</span> <span class="b">set_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="143" /><span class="Maybe">     143:</span> 
<a name="144" /><span class="Maybe">     144:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Q0xFQVJQQUdFRkxBR18w"><span class="b">CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="145" /><span class="Maybe">     145:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="146" /><span class="Maybe">     146:</span>             <span class="f">{</span> <span class="b">clear_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="147" /><span class="Maybe">     147:</span> 
<a name="148" /><span class="Maybe">     148:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19TRVRQQUdFRkxBR18w"><span class="b">__SETPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="149" /><span class="Maybe">     149:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__SetPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="150" /><span class="Maybe">     150:</span>             <span class="f">{</span> <span class="b">__set_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="151" /><span class="Maybe">     151:</span> 
<a name="152" /><span class="Maybe">     152:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="153" /><span class="Maybe">     153:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__ClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>        \
<a name="154" /><span class="Maybe">     154:</span>             <span class="f">{</span> <span class="b">__clear_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="Maybe">     156:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VEVTVFNFVEZMQUdfMA__"><span class="b">TESTSETFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="157" /><span class="Maybe">     157:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">TestSetPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="158" /><span class="Maybe">     158:</span>         <span class="f">{</span> <span class="m">return</span> <span class="b">test_and_set_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="159" /><span class="Maybe">     159:</span> 
<a name="160" /><span class="Maybe">     160:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="161" /><span class="Maybe">     161:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">TestClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>        \
<a name="162" /><span class="Maybe">     162:</span>         <span class="f">{</span> <span class="m">return</span> <span class="b">test_and_clear_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="163" /><span class="Maybe">     163:</span> 
<a name="164" /><span class="Maybe">     164:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19URVNUQ0xFQVJGTEFHXzA_"><span class="b">__TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="165" /><span class="Maybe">     165:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__TestClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>        \
<a name="166" /><span class="Maybe">     166:</span>         <span class="f">{</span> <span class="m">return</span> <span class="b">__test_and_clear_bit</span><span class="f">(</span><span class="b">PG_</span><span class="f">##</span><span class="b">lname</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span>
<a name="167" /><span class="Maybe">     167:</span> 
<a name="168" /><span class="Maybe">     168:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>        \
<a name="169" /><span class="Maybe">     169:</span>     <a href="cpu.c_macros_ref.html#_U0VUUEFHRUZMQUdfMA__"><span class="b">SETPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_Q0xFQVJQQUdFRkxBR18w"><span class="b">CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>
<a name="170" /><span class="Maybe">     170:</span> 
<a name="171" /><span class="Maybe">     171:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19QQUdFRkxBR18w"><span class="b">__PAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>        \
<a name="172" /><span class="Maybe">     172:</span>     <a href="cpu.c_macros_ref.html#_X19TRVRQQUdFRkxBR18w"><span class="b">__SETPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>  <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>
<a name="173" /><span class="Maybe">     173:</span> 
<a name="174" /><span class="Maybe">     174:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                         \
<a name="175" /><span class="Maybe">     175:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">Page</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>            \
<a name="176" /><span class="Maybe">     176:</span>             <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="177" /><span class="Maybe">     177:</span> 
<a name="178" /><span class="Maybe">     178:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>                    \
<a name="179" /><span class="Maybe">     179:</span>     <a href="cpu.c_macros_ref.html#_VEVTVFNFVEZMQUdfMA__"><span class="b">TESTSETFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">uname</span><span class="f">,</span> <span class="b">lname</span><span class="f">)</span>
<a name="180" /><span class="Maybe">     180:</span> 
<a name="181" /><span class="Maybe">     181:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VUUEFHRUZMQUdfTk9PUF8w"><span class="b">SETPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                        \
<a name="182" /><span class="Maybe">     182:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">SetPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span> <span class="f">{</span>  <span class="f">}</span>
<a name="183" /><span class="Maybe">     183:</span> 
<a name="184" /><span class="Maybe">     184:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q0xFQVJQQUdFRkxBR19OT09QXzA_"><span class="b">CLEARPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                    \
<a name="185" /><span class="Maybe">     185:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span> <span class="f">{</span>  <span class="f">}</span>
<a name="186" /><span class="Maybe">     186:</span> 
<a name="187" /><span class="Maybe">     187:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19DTEVBUlBBR0VGTEFHX05PT1BfMA__"><span class="b">__CLEARPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                    \
<a name="188" /><span class="Maybe">     188:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__ClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span> <span class="f">{</span>  <span class="f">}</span>
<a name="189" /><span class="Maybe">     189:</span> 
<a name="190" /><span class="Maybe">     190:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEVTVENMRUFSRkxBR19GQUxTRV8w"><span class="b">TESTCLEARFLAG_FALSE</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                    \
<a name="191" /><span class="Maybe">     191:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">TestClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="192" /><span class="Maybe">     192:</span> 
<a name="193" /><span class="Maybe">     193:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19URVNUQ0xFQVJGTEFHX0ZBTFNFXzA_"><span class="b">__TESTCLEARFLAG_FALSE</span></a><span class="f">(</span><span class="b">uname</span><span class="f">)</span>                    \
<a name="194" /><span class="Maybe">     194:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__TestClearPage</span><span class="f">##</span><span class="b">uname</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="195" /><span class="Maybe">     195:</span> 
<a name="196" /><span class="Maybe">     196:</span> <span class="m">struct</span> <span class="b">page</span><span class="f">;</span>    <span class="k">/* forward declaration */</span>
<a name="197" /><span class="Maybe">     197:</span> 
<a name="198" /><span class="Maybe">     198:</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">Locked</span><span class="f">,</span> <span class="b">locked</span><span class="f">)</span>
<a name="199" /><span class="Maybe">     199:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Error</span><span class="f">,</span> <span class="b">error</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Error</span><span class="f">,</span> <span class="b">error</span><span class="f">)</span>
<a name="200" /><span class="Maybe">     200:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Referenced</span><span class="f">,</span> <span class="b">referenced</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Referenced</span><span class="f">,</span> <span class="b">referenced</span><span class="f">)</span>
<a name="201" /><span class="Maybe">     201:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Dirty</span><span class="f">,</span> <span class="b">dirty</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">Dirty</span><span class="f">,</span> <span class="b">dirty</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Dirty</span><span class="f">,</span> <span class="b">dirty</span><span class="f">)</span>
<a name="202" /><span class="Maybe">     202:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">LRU</span><span class="f">,</span> <span class="b">lru</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">LRU</span><span class="f">,</span> <span class="b">lru</span><span class="f">)</span>
<a name="203" /><span class="Maybe">     203:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Active</span><span class="f">,</span> <span class="b">active</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Active</span><span class="f">,</span> <span class="b">active</span><span class="f">)</span>
<a name="204" /><span class="Maybe">     204:</span>     <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Active</span><span class="f">,</span> <span class="b">active</span><span class="f">)</span>
<a name="205" /><span class="Maybe">     205:</span> <a href="cpu.c_macros_ref.html#_X19QQUdFRkxBR18w"><span class="b">__PAGEFLAG</span></a><span class="f">(</span><span class="b">Slab</span><span class="f">,</span> <span class="b">slab</span><span class="f">)</span>
<a name="206" /><span class="Maybe">     206:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Checked</span><span class="f">,</span> <span class="b">checked</span><span class="f">)</span>        <span class="k">/* Used by some filesystems */</span>
<a name="207" /><span class="Maybe">     207:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Pinned</span><span class="f">,</span> <span class="b">pinned</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">Pinned</span><span class="f">,</span> <span class="b">pinned</span><span class="f">)</span>    <span class="k">/* Xen */</span>
<a name="208" /><span class="Maybe">     208:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">SavePinned</span><span class="f">,</span> <span class="b">savepinned</span><span class="f">)</span><span class="f">;</span>            <span class="k">/* Xen */</span>
<a name="209" /><span class="Maybe">     209:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Reserved</span><span class="f">,</span> <span class="b">reserved</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Reserved</span><span class="f">,</span> <span class="b">reserved</span><span class="f">)</span>
<a name="210" /><span class="Maybe">     210:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">SwapBacked</span><span class="f">,</span> <span class="b">swapbacked</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">SwapBacked</span><span class="f">,</span> <span class="b">swapbacked</span><span class="f">)</span>
<a name="211" /><span class="Maybe">     211:</span> 
<a name="212" /><span class="Maybe">     212:</span> <a href="cpu.c_macros_ref.html#_X19QQUdFRkxBR18w"><span class="b">__PAGEFLAG</span></a><span class="f">(</span><span class="b">SlobFree</span><span class="f">,</span> <span class="b">slob_free</span><span class="f">)</span>
<a name="213" /><span class="Maybe">     213:</span> 
<a name="214" /><span class="Maybe">     214:</span> <span class="k">/*</span>
<a name="215" /><span class="Maybe">     215:</span> <span class="k"> * Private page markings that may be used by the filesystem that owns the page</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="k"> * for its own purposes.</span>
<a name="217" /><span class="Maybe">     217:</span> <span class="k"> * - PG_private and PG_private_2 cause releasepage() and co to be invoked</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="k"> */</span>
<a name="219" /><span class="Maybe">     219:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Private</span><span class="f">,</span> <span class="m">private</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19TRVRQQUdFRkxBR18w"><span class="b">__SETPAGEFLAG</span></a><span class="f">(</span><span class="b">Private</span><span class="f">,</span> <span class="m">private</span><span class="f">)</span>
<a name="220" /><span class="Maybe">     220:</span>     <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Private</span><span class="f">,</span> <span class="m">private</span><span class="f">)</span>
<a name="221" /><span class="Maybe">     221:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Private2</span><span class="f">,</span> <span class="b">private_2</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">Private2</span><span class="f">,</span> <span class="b">private_2</span><span class="f">)</span>
<a name="222" /><span class="Maybe">     222:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">OwnerPriv1</span><span class="f">,</span> <span class="b">owner_priv_1</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">OwnerPriv1</span><span class="f">,</span> <span class="b">owner_priv_1</span><span class="f">)</span>
<a name="223" /><span class="Maybe">     223:</span> 
<a name="224" /><span class="Maybe">     224:</span> <span class="k">/*</span>
<a name="225" /><span class="Maybe">     225:</span> <span class="k"> * Only test-and-set exist for PG_writeback.  The unconditional operators are</span>
<a name="226" /><span class="Maybe">     226:</span> <span class="k"> * risky: they bypass page accounting.</span>
<a name="227" /><span class="Maybe">     227:</span> <span class="k"> */</span>
<a name="228" /><span class="Maybe">     228:</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">Writeback</span><span class="f">,</span> <span class="b">writeback</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">Writeback</span><span class="f">,</span> <span class="b">writeback</span><span class="f">)</span>
<a name="229" /><span class="Maybe">     229:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">MappedToDisk</span><span class="f">,</span> <span class="b">mappedtodisk</span><span class="f">)</span>
<a name="230" /><span class="Maybe">     230:</span> 
<a name="231" /><span class="Maybe">     231:</span> <span class="k">/* PG_readahead is only used for file reads; PG_reclaim is only for writes */</span>
<a name="232" /><span class="Maybe">     232:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Reclaim</span><span class="f">,</span> <span class="b">reclaim</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Reclaim</span><span class="f">,</span> <span class="b">reclaim</span><span class="f">)</span>
<a name="233" /><span class="Maybe">     233:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Readahead</span><span class="f">,</span> <span class="b">reclaim</span><span class="f">)</span>        <span class="k">/* Reminder to do async read-ahead */</span>
<a name="234" /><span class="Maybe">     234:</span> 
<a name="235" /><span class="False">     235:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HIGHMEM</span>
<a name="236" /><span class="False">     236:</span> <span class="k">/*</span>
<a name="237" /><span class="False">     237:</span> <span class="k"> * Must use a macro here due to header dependency issues. page_zone() is not</span>
<a name="238" /><span class="False">     238:</span> <span class="k"> * available at this point.</span>
<a name="239" /><span class="False">     239:</span> <span class="k"> */</span>
<a name="240" /><span class="False">     240:</span> <span class="f">#</span><span class="n">define</span> <span class="b">PageHighMem</span><span class="f">(</span><span class="b">__p</span><span class="f">)</span> <span class="b">is_highmem</span><span class="f">(</span><span class="b">page_zone</span><span class="f">(</span><span class="b">__p</span><span class="f">)</span><span class="f">)</span>
<a name="241" /><span class="Maybe">     241:</span> <span class="f">#</span><span class="n">else</span>
<a name="242" /><span class="Maybe">     242:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">HighMem</span><span class="f">)</span>
<a name="243" /><span class="Maybe">     243:</span> <span class="f">#</span><span class="n">endif</span>
<a name="244" /><span class="Maybe">     244:</span> 
<a name="245" /><span class="Maybe">     245:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NXQVBfMA__"><span class="b">CONFIG_SWAP</span></a>
<a name="246" /><span class="Maybe">     246:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">SwapCache</span><span class="f">,</span> <span class="b">swapcache</span><span class="f">)</span>
<a name="247" /><span class="False">     247:</span> <span class="f">#</span><span class="n">else</span>
<a name="248" /><span class="False">     248:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">SwapCache</span><span class="f">)</span>
<a name="249" /><span class="False">     249:</span>     <a href="cpu.c_macros_noref.html#_U0VUUEFHRUZMQUdfTk9PUF8w"><span class="b">SETPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">SwapCache</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_Q0xFQVJQQUdFRkxBR19OT09QXzA_"><span class="b">CLEARPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">SwapCache</span><span class="f">)</span>
<a name="250" /><span class="Maybe">     250:</span> <span class="f">#</span><span class="n">endif</span>
<a name="251" /><span class="Maybe">     251:</span> 
<a name="252" /><span class="Maybe">     252:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Unevictable</span><span class="f">,</span> <span class="b">unevictable</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Unevictable</span><span class="f">,</span> <span class="b">unevictable</span><span class="f">)</span>
<a name="253" /><span class="Maybe">     253:</span>     <a href="cpu.c_macros_ref.html#_VEVTVENMRUFSRkxBR18w"><span class="b">TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Unevictable</span><span class="f">,</span> <span class="b">unevictable</span><span class="f">)</span>
<a name="254" /><span class="Maybe">     254:</span> 
<a name="255" /><span class="Maybe">     255:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="256" /><span class="Maybe">     256:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">,</span> <span class="b">mlocked</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">,</span> <span class="b">mlocked</span><span class="f">)</span>
<a name="257" /><span class="Maybe">     257:</span>     <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">,</span> <span class="b">mlocked</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19URVNUQ0xFQVJGTEFHXzA_"><span class="b">__TESTCLEARFLAG</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">,</span> <span class="b">mlocked</span><span class="f">)</span>
<a name="258" /><span class="False">     258:</span> <span class="f">#</span><span class="n">else</span>
<a name="259" /><span class="False">     259:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_U0VUUEFHRUZMQUdfTk9PUF8w"><span class="b">SETPAGEFLAG_NOOP</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">)</span>
<a name="260" /><span class="False">     260:</span>     <a href="cpu.c_macros_noref.html#_VEVTVENMRUFSRkxBR19GQUxTRV8w"><span class="b">TESTCLEARFLAG_FALSE</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_X19URVNUQ0xFQVJGTEFHX0ZBTFNFXzA_"><span class="b">__TESTCLEARFLAG_FALSE</span></a><span class="f">(</span><span class="b">Mlocked</span><span class="f">)</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="f">#</span><span class="n">endif</span>
<a name="262" /><span class="Maybe">     262:</span> 
<a name="263" /><span class="Maybe">     263:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRF8w"><span class="b">CONFIG_ARCH_USES_PG_UNCACHED</span></a>
<a name="264" /><span class="Maybe">     264:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">Uncached</span><span class="f">,</span> <span class="b">uncached</span><span class="f">)</span>
<a name="265" /><span class="False">     265:</span> <span class="f">#</span><span class="n">else</span>
<a name="266" /><span class="False">     266:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">Uncached</span><span class="f">)</span>
<a name="267" /><span class="Maybe">     267:</span> <span class="f">#</span><span class="n">endif</span>
<a name="268" /><span class="Maybe">     268:</span> 
<a name="269" /><span class="Maybe">     269:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01FTU9SWV9GQUlMVVJFXzA_"><span class="b">CONFIG_MEMORY_FAILURE</span></a>
<a name="270" /><span class="Maybe">     270:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfMA__"><span class="b">PAGEFLAG</span></a><span class="f">(</span><span class="b">HWPoison</span><span class="f">,</span> <span class="b">hwpoison</span><span class="f">)</span>
<a name="271" /><span class="Maybe">     271:</span> <a href="cpu.c_macros_ref.html#_VEVTVFNDRkxBR18w"><span class="b">TESTSCFLAG</span></a><span class="f">(</span><span class="b">HWPoison</span><span class="f">,</span> <span class="b">hwpoison</span><span class="f">)</span>
<a name="272" /><span class="Maybe">     272:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19IV1BPSVNPTl8w"><span class="b">__PG_HWPOISON</span></a> <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <span class="b">PG_hwpoison</span><span class="f">)</span>
<a name="273" /><span class="False">     273:</span> <span class="f">#</span><span class="n">else</span>
<a name="274" /><span class="False">     274:</span> <a href="cpu.c_macros_ref.html#_UEFHRUZMQUdfRkFMU0VfMA__"><span class="b">PAGEFLAG_FALSE</span></a><span class="f">(</span><span class="b">HWPoison</span><span class="f">)</span>
<a name="275" /><span class="False">     275:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19IV1BPSVNPTl8w"><span class="b">__PG_HWPOISON</span></a> <span class="c">0</span>
<a name="276" /><span class="Maybe">     276:</span> <span class="f">#</span><span class="n">endif</span>
<a name="277" /><span class="Maybe">     277:</span> 
<a name="278" /><span class="Maybe">     278:</span> <span class="b">u64</span> <span class="b">stable_page_flags</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="279" /><span class="Maybe">     279:</span> 
<a name="280" /><span class="Maybe">     280:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageUptodate</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="281" /><span class="Maybe">     281:</span> <span class="f">{</span>
<a name="282" /><span class="Maybe">     282:</span>     <span class="m">int</span> <span class="b">ret</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="b">PG_uptodate</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="283" /><span class="Maybe">     283:</span> 
<a name="284" /><span class="Maybe">     284:</span>     <span class="k">/*</span>
<a name="285" /><span class="Maybe">     285:</span> <span class="k">     * Must ensure that the data we read out of the page is loaded</span>
<a name="286" /><span class="Maybe">     286:</span> <span class="k">     * _after_ we&apos;ve loaded page-&gt;flags to check for PageUptodate.</span>
<a name="287" /><span class="Maybe">     287:</span> <span class="k">     * We can skip the barrier if the page is not uptodate, because</span>
<a name="288" /><span class="Maybe">     288:</span> <span class="k">     * we wouldn&apos;t be reading anything from it.</span>
<a name="289" /><span class="Maybe">     289:</span> <span class="k">     *</span>
<a name="290" /><span class="Maybe">     290:</span> <span class="k">     * See SetPageUptodate() for the other side of the story.</span>
<a name="291" /><span class="Maybe">     291:</span> <span class="k">     */</span>
<a name="292" /><span class="Maybe">     292:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">ret</span><span class="f">)</span>
<a name="293" /><span class="Maybe">     293:</span>         <a href="cpu.c_macros_ref.html#_c21wX3JtYl8w"><span class="b">smp_rmb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="294" /><span class="Maybe">     294:</span> 
<a name="295" /><span class="Maybe">     295:</span>     <span class="m">return</span> <span class="b">ret</span><span class="f">;</span>
<a name="296" /><span class="Maybe">     296:</span> <span class="f">}</span>
<a name="297" /><span class="Maybe">     297:</span> 
<a name="298" /><span class="Maybe">     298:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__SetPageUptodate</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="299" /><span class="Maybe">     299:</span> <span class="f">{</span>
<a name="300" /><span class="Maybe">     300:</span>     <a href="cpu.c_macros_ref.html#_c21wX3dtYl8w"><span class="b">smp_wmb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="301" /><span class="Maybe">     301:</span>     <span class="b">__set_bit</span><span class="f">(</span><span class="b">PG_uptodate</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="302" /><span class="Maybe">     302:</span> <span class="f">}</span>
<a name="303" /><span class="Maybe">     303:</span> 
<a name="304" /><span class="Maybe">     304:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">SetPageUptodate</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="305" /><span class="Maybe">     305:</span> <span class="f">{</span>
<a name="306" /><span class="Maybe">     306:</span>     <span class="k">/*</span>
<a name="307" /><span class="Maybe">     307:</span> <span class="k">     * Memory barrier must be issued before setting the PG_uptodate bit,</span>
<a name="308" /><span class="Maybe">     308:</span> <span class="k">     * so that all previous stores issued in order to bring the page</span>
<a name="309" /><span class="Maybe">     309:</span> <span class="k">     * uptodate are actually visible before PageUptodate becomes true.</span>
<a name="310" /><span class="Maybe">     310:</span> <span class="k">     */</span>
<a name="311" /><span class="Maybe">     311:</span>     <a href="cpu.c_macros_ref.html#_c21wX3dtYl8w"><span class="b">smp_wmb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="312" /><span class="Maybe">     312:</span>     <span class="b">set_bit</span><span class="f">(</span><span class="b">PG_uptodate</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="313" /><span class="Maybe">     313:</span> <span class="f">}</span>
<a name="314" /><span class="Maybe">     314:</span> 
<a name="315" /><span class="Maybe">     315:</span> <a href="cpu.c_macros_ref.html#_Q0xFQVJQQUdFRkxBR18w"><span class="b">CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Uptodate</span><span class="f">,</span> <span class="b">uptodate</span><span class="f">)</span>
<a name="316" /><span class="Maybe">     316:</span> 
<a name="317" /><span class="Maybe">     317:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">cancel_dirty_page</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">account_size</span><span class="f">)</span><span class="f">;</span>
<a name="318" /><span class="Maybe">     318:</span> 
<a name="319" /><span class="Maybe">     319:</span> <span class="m">int</span> <span class="b">test_clear_page_writeback</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="320" /><span class="Maybe">     320:</span> <span class="m">int</span> <span class="b">test_set_page_writeback</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="321" /><span class="Maybe">     321:</span> 
<a name="322" /><span class="Maybe">     322:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">set_page_writeback</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="323" /><span class="Maybe">     323:</span> <span class="f">{</span>
<a name="324" /><span class="Maybe">     324:</span>     <span class="b">test_set_page_writeback</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="325" /><span class="Maybe">     325:</span> <span class="f">}</span>
<a name="326" /><span class="Maybe">     326:</span> 
<a name="327" /><span class="Maybe">     327:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1BBR0VGTEFHU19FWFRFTkRFRF8w"><span class="b">CONFIG_PAGEFLAGS_EXTENDED</span></a>
<a name="328" /><span class="Maybe">     328:</span> <span class="k">/*</span>
<a name="329" /><span class="Maybe">     329:</span> <span class="k"> * System with lots of page flags available. This allows separate</span>
<a name="330" /><span class="Maybe">     330:</span> <span class="k"> * flags for PageHead() and PageTail() checks of compound pages so that bit</span>
<a name="331" /><span class="Maybe">     331:</span> <span class="k"> * tests can be used in performance sensitive paths. PageCompound is</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="k"> * generally not used in hot code paths except arch/powerpc/mm/init_64.c</span>
<a name="333" /><span class="Maybe">     333:</span> <span class="k"> * and arch/powerpc/kvm/book3s_64_vio_hv.c which use it to detect huge pages</span>
<a name="334" /><span class="Maybe">     334:</span> <span class="k"> * and avoid handling those in real mode.</span>
<a name="335" /><span class="Maybe">     335:</span> <span class="k"> */</span>
<a name="336" /><span class="Maybe">     336:</span> <a href="cpu.c_macros_ref.html#_X19QQUdFRkxBR18w"><span class="b">__PAGEFLAG</span></a><span class="f">(</span><span class="b">Head</span><span class="f">,</span> <span class="b">head</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_Q0xFQVJQQUdFRkxBR18w"><span class="b">CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Head</span><span class="f">,</span> <span class="b">head</span><span class="f">)</span>
<a name="337" /><span class="Maybe">     337:</span> <a href="cpu.c_macros_ref.html#_X19QQUdFRkxBR18w"><span class="b">__PAGEFLAG</span></a><span class="f">(</span><span class="b">Tail</span><span class="f">,</span> <span class="b">tail</span><span class="f">)</span>
<a name="338" /><span class="Maybe">     338:</span> 
<a name="339" /><span class="Maybe">     339:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageCompound</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="340" /><span class="Maybe">     340:</span> <span class="f">{</span>
<a name="341" /><span class="Maybe">     341:</span>     <span class="m">return</span> <span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <span class="f">(</span><span class="f">(</span><span class="c">1L</span> <span class="f">&lt;&lt;</span> <span class="b">PG_head</span><span class="f">)</span> <span class="f">|</span> <span class="f">(</span><span class="c">1L</span> <span class="f">&lt;&lt;</span> <span class="b">PG_tail</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="342" /><span class="Maybe">     342:</span> 
<a name="343" /><span class="Maybe">     343:</span> <span class="f">}</span>
<a name="344" /><span class="False">     344:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRANSPARENT_HUGEPAGE</span>
<a name="345" /><span class="False">     345:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ClearPageCompound</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="346" /><span class="False">     346:</span> <span class="f">{</span>
<a name="347" /><span class="False">     347:</span>     <a href="cpu.c_macros_ref.html#_QlVHX09OXzA_"><span class="b">BUG_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">PageHead</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="348" /><span class="False">     348:</span>     <span class="b">ClearPageHead</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="349" /><span class="False">     349:</span> <span class="f">}</span>
<a name="350" /><span class="Maybe">     350:</span> <span class="f">#</span><span class="n">endif</span>
<a name="351" /><span class="False">     351:</span> <span class="f">#</span><span class="n">else</span>
<a name="352" /><span class="False">     352:</span> <span class="k">/*</span>
<a name="353" /><span class="False">     353:</span> <span class="k"> * Reduce page flag use as much as possible by overlapping</span>
<a name="354" /><span class="False">     354:</span> <span class="k"> * compound page flags with the flags used for page cache pages. Possible</span>
<a name="355" /><span class="False">     355:</span> <span class="k"> * because PageCompound is always set for compound pages and not for</span>
<a name="356" /><span class="False">     356:</span> <span class="k"> * pages on the LRU and/or pagecache.</span>
<a name="357" /><span class="False">     357:</span> <span class="k"> */</span>
<a name="358" /><span class="False">     358:</span> <a href="cpu.c_macros_ref.html#_VEVTVFBBR0VGTEFHXzA_"><span class="b">TESTPAGEFLAG</span></a><span class="f">(</span><span class="b">Compound</span><span class="f">,</span> <span class="b">compound</span><span class="f">)</span>
<a name="359" /><span class="False">     359:</span> <a href="cpu.c_macros_ref.html#_X19TRVRQQUdFRkxBR18w"><span class="b">__SETPAGEFLAG</span></a><span class="f">(</span><span class="b">Head</span><span class="f">,</span> <span class="b">compound</span><span class="f">)</span>  <a href="cpu.c_macros_ref.html#_X19DTEVBUlBBR0VGTEFHXzA_"><span class="b">__CLEARPAGEFLAG</span></a><span class="f">(</span><span class="b">Head</span><span class="f">,</span> <span class="b">compound</span><span class="f">)</span>
<a name="360" /><span class="False">     360:</span> 
<a name="361" /><span class="False">     361:</span> <span class="k">/*</span>
<a name="362" /><span class="False">     362:</span> <span class="k"> * PG_reclaim is used in combination with PG_compound to mark the</span>
<a name="363" /><span class="False">     363:</span> <span class="k"> * head and tail of a compound page. This saves one page flag</span>
<a name="364" /><span class="False">     364:</span> <span class="k"> * but makes it impossible to use compound pages for the page cache.</span>
<a name="365" /><span class="False">     365:</span> <span class="k"> * The PG_reclaim bit would have to be used for reclaim or readahead</span>
<a name="366" /><span class="False">     366:</span> <span class="k"> * if compound pages enter the page cache.</span>
<a name="367" /><span class="False">     367:</span> <span class="k"> *</span>
<a name="368" /><span class="False">     368:</span> <span class="k"> * PG_compound &amp; PG_reclaim    =&gt; Tail page</span>
<a name="369" /><span class="False">     369:</span> <span class="k"> * PG_compound &amp; ~PG_reclaim    =&gt; Head page</span>
<a name="370" /><span class="False">     370:</span> <span class="k"> */</span>
<a name="371" /><span class="False">     371:</span> <span class="f">#</span><span class="n">define</span> <span class="b">PG_head_mask</span> <span class="f">(</span><span class="f">(</span><span class="c">1L</span> <span class="f">&lt;&lt;</span> <span class="b">PG_compound</span><span class="f">)</span><span class="f">)</span>
<a name="372" /><span class="False">     372:</span> <span class="f">#</span><span class="n">define</span> <span class="b">PG_head_tail_mask</span> <span class="f">(</span><span class="f">(</span><span class="c">1L</span> <span class="f">&lt;&lt;</span> <span class="b">PG_compound</span><span class="f">)</span> <span class="f">|</span> <span class="f">(</span><span class="c">1L</span> <span class="f">&lt;&lt;</span> <span class="b">PG_reclaim</span><span class="f">)</span><span class="f">)</span>
<a name="373" /><span class="False">     373:</span> 
<a name="374" /><span class="False">     374:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageHead</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="375" /><span class="False">     375:</span> <span class="f">{</span>
<a name="376" /><span class="False">     376:</span>     <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <span class="b">PG_head_tail_mask</span><span class="f">)</span> <span class="f">==</span> <span class="b">PG_head_mask</span><span class="f">)</span><span class="f">;</span>
<a name="377" /><span class="False">     377:</span> <span class="f">}</span>
<a name="378" /><span class="False">     378:</span> 
<a name="379" /><span class="False">     379:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTail</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="380" /><span class="False">     380:</span> <span class="f">{</span>
<a name="381" /><span class="False">     381:</span>     <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <span class="b">PG_head_tail_mask</span><span class="f">)</span> <span class="f">==</span> <span class="b">PG_head_tail_mask</span><span class="f">)</span><span class="f">;</span>
<a name="382" /><span class="False">     382:</span> <span class="f">}</span>
<a name="383" /><span class="False">     383:</span> 
<a name="384" /><span class="False">     384:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__SetPageTail</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="385" /><span class="False">     385:</span> <span class="f">{</span>
<a name="386" /><span class="False">     386:</span>     <span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">|=</span> <span class="b">PG_head_tail_mask</span><span class="f">;</span>
<a name="387" /><span class="False">     387:</span> <span class="f">}</span>
<a name="388" /><span class="False">     388:</span> 
<a name="389" /><span class="False">     389:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__ClearPageTail</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="390" /><span class="False">     390:</span> <span class="f">{</span>
<a name="391" /><span class="False">     391:</span>     <span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;=</span> <span class="f">~</span><span class="b">PG_head_tail_mask</span><span class="f">;</span>
<a name="392" /><span class="False">     392:</span> <span class="f">}</span>
<a name="393" /><span class="False">     393:</span> 
<a name="394" /><span class="False">     394:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRANSPARENT_HUGEPAGE</span>
<a name="395" /><span class="False">     395:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ClearPageCompound</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="396" /><span class="False">     396:</span> <span class="f">{</span>
<a name="397" /><span class="False">     397:</span>     <a href="cpu.c_macros_ref.html#_QlVHX09OXzA_"><span class="b">BUG_ON</span></a><span class="f">(</span><span class="f">(</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <span class="b">PG_head_tail_mask</span><span class="f">)</span> <span class="f">!=</span> <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_compound</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="398" /><span class="False">     398:</span>     <span class="b">clear_bit</span><span class="f">(</span><span class="b">PG_compound</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="399" /><span class="False">     399:</span> <span class="f">}</span>
<a name="400" /><span class="False">     400:</span> <span class="f">#</span><span class="n">endif</span>
<a name="401" /><span class="False">     401:</span> 
<a name="402" /><span class="Maybe">     402:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !PAGEFLAGS_EXTENDED */</span>
<a name="403" /><span class="Maybe">     403:</span> 
<a name="404" /><span class="False">     404:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRANSPARENT_HUGEPAGE</span>
<a name="405" /><span class="False">     405:</span> <span class="k">/*</span>
<a name="406" /><span class="False">     406:</span> <span class="k"> * PageHuge() only returns true for hugetlbfs pages, but not for</span>
<a name="407" /><span class="False">     407:</span> <span class="k"> * normal or transparent huge pages.</span>
<a name="408" /><span class="False">     408:</span> <span class="k"> *</span>
<a name="409" /><span class="False">     409:</span> <span class="k"> * PageTransHuge() returns true for both transparent huge and</span>
<a name="410" /><span class="False">     410:</span> <span class="k"> * hugetlbfs pages, but not normal pages. PageTransHuge() can only be</span>
<a name="411" /><span class="False">     411:</span> <span class="k"> * called only in the core VM paths where hugetlbfs pages can&apos;t exist.</span>
<a name="412" /><span class="False">     412:</span> <span class="k"> */</span>
<a name="413" /><span class="False">     413:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransHuge</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="414" /><span class="False">     414:</span> <span class="f">{</span>
<a name="415" /><span class="False">     415:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="b">PageTail</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="416" /><span class="False">     416:</span>     <span class="m">return</span> <span class="b">PageHead</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="417" /><span class="False">     417:</span> <span class="f">}</span>
<a name="418" /><span class="False">     418:</span> 
<a name="419" /><span class="False">     419:</span> <span class="k">/*</span>
<a name="420" /><span class="False">     420:</span> <span class="k"> * PageTransCompound returns true for both transparent huge pages</span>
<a name="421" /><span class="False">     421:</span> <span class="k"> * and hugetlbfs pages, so it should only be called when it&apos;s known</span>
<a name="422" /><span class="False">     422:</span> <span class="k"> * that hugetlbfs pages aren&apos;t involved.</span>
<a name="423" /><span class="False">     423:</span> <span class="k"> */</span>
<a name="424" /><span class="False">     424:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransCompound</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="425" /><span class="False">     425:</span> <span class="f">{</span>
<a name="426" /><span class="False">     426:</span>     <span class="m">return</span> <span class="b">PageCompound</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="427" /><span class="False">     427:</span> <span class="f">}</span>
<a name="428" /><span class="False">     428:</span> 
<a name="429" /><span class="False">     429:</span> <span class="k">/*</span>
<a name="430" /><span class="False">     430:</span> <span class="k"> * PageTransTail returns true for both transparent huge pages</span>
<a name="431" /><span class="False">     431:</span> <span class="k"> * and hugetlbfs pages, so it should only be called when it&apos;s known</span>
<a name="432" /><span class="False">     432:</span> <span class="k"> * that hugetlbfs pages aren&apos;t involved.</span>
<a name="433" /><span class="False">     433:</span> <span class="k"> */</span>
<a name="434" /><span class="False">     434:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransTail</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="435" /><span class="False">     435:</span> <span class="f">{</span>
<a name="436" /><span class="False">     436:</span>     <span class="m">return</span> <span class="b">PageTail</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="437" /><span class="False">     437:</span> <span class="f">}</span>
<a name="438" /><span class="False">     438:</span> 
<a name="439" /><span class="Maybe">     439:</span> <span class="f">#</span><span class="n">else</span>
<a name="440" /><span class="Maybe">     440:</span> 
<a name="441" /><span class="Maybe">     441:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransHuge</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="442" /><span class="Maybe">     442:</span> <span class="f">{</span>
<a name="443" /><span class="Maybe">     443:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="444" /><span class="Maybe">     444:</span> <span class="f">}</span>
<a name="445" /><span class="Maybe">     445:</span> 
<a name="446" /><span class="Maybe">     446:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransCompound</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="447" /><span class="Maybe">     447:</span> <span class="f">{</span>
<a name="448" /><span class="Maybe">     448:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="449" /><span class="Maybe">     449:</span> <span class="f">}</span>
<a name="450" /><span class="Maybe">     450:</span> 
<a name="451" /><span class="Maybe">     451:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageTransTail</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="452" /><span class="Maybe">     452:</span> <span class="f">{</span>
<a name="453" /><span class="Maybe">     453:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="454" /><span class="Maybe">     454:</span> <span class="f">}</span>
<a name="455" /><span class="Maybe">     455:</span> <span class="f">#</span><span class="n">endif</span>
<a name="456" /><span class="Maybe">     456:</span> 
<a name="457" /><span class="Maybe">     457:</span> <span class="k">/*</span>
<a name="458" /><span class="Maybe">     458:</span> <span class="k"> * If network-based swap is enabled, sl*b must keep track of whether pages</span>
<a name="459" /><span class="Maybe">     459:</span> <span class="k"> * were allocated from pfmemalloc reserves.</span>
<a name="460" /><span class="Maybe">     460:</span> <span class="k"> */</span>
<a name="461" /><span class="Maybe">     461:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">PageSlabPfmemalloc</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="462" /><span class="Maybe">     462:</span> <span class="f">{</span>
<a name="463" /><span class="Maybe">     463:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">PageSlab</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="464" /><span class="Maybe">     464:</span>     <span class="m">return</span> <span class="b">PageActive</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="465" /><span class="Maybe">     465:</span> <span class="f">}</span>
<a name="466" /><span class="Maybe">     466:</span> 
<a name="467" /><span class="Maybe">     467:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">SetPageSlabPfmemalloc</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="468" /><span class="Maybe">     468:</span> <span class="f">{</span>
<a name="469" /><span class="Maybe">     469:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">PageSlab</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="470" /><span class="Maybe">     470:</span>     <span class="b">SetPageActive</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="471" /><span class="Maybe">     471:</span> <span class="f">}</span>
<a name="472" /><span class="Maybe">     472:</span> 
<a name="473" /><span class="Maybe">     473:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__ClearPageSlabPfmemalloc</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="474" /><span class="Maybe">     474:</span> <span class="f">{</span>
<a name="475" /><span class="Maybe">     475:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">PageSlab</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="476" /><span class="Maybe">     476:</span>     <span class="b">__ClearPageActive</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="477" /><span class="Maybe">     477:</span> <span class="f">}</span>
<a name="478" /><span class="Maybe">     478:</span> 
<a name="479" /><span class="Maybe">     479:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">ClearPageSlabPfmemalloc</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="480" /><span class="Maybe">     480:</span> <span class="f">{</span>
<a name="481" /><span class="Maybe">     481:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">PageSlab</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="482" /><span class="Maybe">     482:</span>     <span class="b">ClearPageActive</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="483" /><span class="Maybe">     483:</span> <span class="f">}</span>
<a name="484" /><span class="Maybe">     484:</span> 
<a name="485" /><span class="Maybe">     485:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="486" /><span class="Maybe">     486:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19NTE9DS0VEXzA_"><span class="b">__PG_MLOCKED</span></a>        <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_mlocked</span><span class="f">)</span>
<a name="487" /><span class="False">     487:</span> <span class="f">#</span><span class="n">else</span>
<a name="488" /><span class="False">     488:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19NTE9DS0VEXzA_"><span class="b">__PG_MLOCKED</span></a>        <span class="c">0</span>
<a name="489" /><span class="Maybe">     489:</span> <span class="f">#</span><span class="n">endif</span>
<a name="490" /><span class="Maybe">     490:</span> 
<a name="491" /><span class="False">     491:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRANSPARENT_HUGEPAGE</span>
<a name="492" /><span class="False">     492:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19DT01QT1VORF9MT0NLXzA_"><span class="b">__PG_COMPOUND_LOCK</span></a>        <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_compound_lock</span><span class="f">)</span>
<a name="493" /><span class="Maybe">     493:</span> <span class="f">#</span><span class="n">else</span>
<a name="494" /><span class="Maybe">     494:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19QR19DT01QT1VORF9MT0NLXzA_"><span class="b">__PG_COMPOUND_LOCK</span></a>        <span class="c">0</span>
<a name="495" /><span class="Maybe">     495:</span> <span class="f">#</span><span class="n">endif</span>
<a name="496" /><span class="Maybe">     496:</span> 
<a name="497" /><span class="Maybe">     497:</span> <span class="k">/*</span>
<a name="498" /><span class="Maybe">     498:</span> <span class="k"> * Flags checked when a page is freed.  Pages being freed should not have</span>
<a name="499" /><span class="Maybe">     499:</span> <span class="k"> * these flags set.  It they are, there is a problem.</span>
<a name="500" /><span class="Maybe">     500:</span> <span class="k"> */</span>
<a name="501" /><span class="Maybe">     501:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEFHRV9GTEFHU19DSEVDS19BVF9GUkVFXzA_"><span class="b">PAGE_FLAGS_CHECK_AT_FREE</span></a> \
<a name="502" /><span class="Maybe">     502:</span>     <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_lru</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_locked</span>    <span class="f">|</span> \
<a name="503" /><span class="Maybe">     503:</span>      <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_private</span> <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_private_2</span> <span class="f">|</span> \
<a name="504" /><span class="Maybe">     504:</span>      <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_writeback</span> <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_reserved</span> <span class="f">|</span> \
<a name="505" /><span class="Maybe">     505:</span>      <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_slab</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_swapcache</span> <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_active</span> <span class="f">|</span> \
<a name="506" /><span class="Maybe">     506:</span>      <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_unevictable</span> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19QR19NTE9DS0VEXzA_"><span class="b">__PG_MLOCKED</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19QR19IV1BPSVNPTl8w"><span class="b">__PG_HWPOISON</span></a> <span class="f">|</span> \
<a name="507" /><span class="Maybe">     507:</span>      <a href="cpu.c_macros_noref.html#_X19QR19DT01QT1VORF9MT0NLXzA_"><span class="b">__PG_COMPOUND_LOCK</span></a><span class="f">)</span>
<a name="508" /><span class="Maybe">     508:</span> 
<a name="509" /><span class="Maybe">     509:</span> <span class="k">/*</span>
<a name="510" /><span class="Maybe">     510:</span> <span class="k"> * Flags checked when a page is prepped for return by the page allocator.</span>
<a name="511" /><span class="Maybe">     511:</span> <span class="k"> * Pages being prepped should not have any flags set.  It they are set,</span>
<a name="512" /><span class="Maybe">     512:</span> <span class="k"> * there has been a kernel bug or struct page corruption.</span>
<a name="513" /><span class="Maybe">     513:</span> <span class="k"> */</span>
<a name="514" /><span class="Maybe">     514:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQXzA_"><span class="b">PAGE_FLAGS_CHECK_AT_PREP</span></a>    <span class="f">(</span><span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_TlJfUEFHRUZMQUdTXzA_"><span class="b">NR_PAGEFLAGS</span></a><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="515" /><span class="Maybe">     515:</span> 
<a name="516" /><span class="Maybe">     516:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_UEFHRV9GTEFHU19QUklWQVRFXzA_"><span class="b">PAGE_FLAGS_PRIVATE</span></a>                \
<a name="517" /><span class="Maybe">     517:</span>     <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_private</span> <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="b">PG_private_2</span><span class="f">)</span>
<a name="518" /><span class="Maybe">     518:</span> <span class="k">/**</span>
<a name="519" /><span class="Maybe">     519:</span> <span class="k"> * page_has_private - Determine if page has private stuff</span>
<a name="520" /><span class="Maybe">     520:</span> <span class="k"> * @page: The page to be checked</span>
<a name="521" /><span class="Maybe">     521:</span> <span class="k"> *</span>
<a name="522" /><span class="Maybe">     522:</span> <span class="k"> * Determine if a page has private stuff, indicating that release routines</span>
<a name="523" /><span class="Maybe">     523:</span> <span class="k"> * should be invoked upon it.</span>
<a name="524" /><span class="Maybe">     524:</span> <span class="k"> */</span>
<a name="525" /><span class="Maybe">     525:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">page_has_private</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span>
<a name="526" /><span class="Maybe">     526:</span> <span class="f">{</span>
<a name="527" /><span class="Maybe">     527:</span>     <span class="m">return</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">page</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_UEFHRV9GTEFHU19QUklWQVRFXzA_"><span class="b">PAGE_FLAGS_PRIVATE</span></a><span class="f">)</span><span class="f">;</span>
<a name="528" /><span class="Maybe">     528:</span> <span class="f">}</span>
<a name="529" /><span class="Maybe">     529:</span> 
<a name="530" /><span class="Maybe">     530:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !__GENERATING_BOUNDS_H */</span>
<a name="531" /><span class="Maybe">     531:</span> 
<a name="532" /><span class="True">     532:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* PAGE_FLAGS_H */</span>
<a name="533" /><span class="True">     533:</span> </pre>
  </body>
</html>
